Computing device for running computer program on video card selected based on video card preferences of the program

ABSTRACT

A computing device includes a number of video cards. The computing device also includes a mechanism to determine one or more parameters relating to video card parameters of a target computer program. The mechanism is to select a video card from the video cards of the computing device based on the parameters, and is to run the target computer program on the video card selected.

RELATED APPLICATIONS

The present patent application is related to the cofiled patentapplication entitled “Method for running computer program on video cardselected based on video card preferences of the program,” filed on______, and assigned Ser. No. ______. [attorney docket no.BEA920060037US1].

FIELD OF THE INVENTION

The present invention relates generally to a computing device having anumber of video cards, and more particularly to running a computerprogram on one of the video cards of the computing device that isselected based on video card preferences of the computer program.

BACKGROUND OF THE INVENTION

At least some modern operating systems are capable of supportingmultiple video cards, video chipsets, or graphics cards, withincomputing devices on which the operating systems are run. For example, acomputing device may have two video cards, with a display deviceconnected to each video device. The operating system running on thecomputing device leverages these two video cards. For instance, theoperating system may expose a graphical user interface (GUI) desktopthat spans the two display devices connected to the video cards. Theuser is thus able to run computer programs that display windows oneither or both of the display devices.

Different video cards have different capabilities. For example, somevideo cards are able to support higher resolutions and/or more colorsthan other video cards. As another example, some video cards havebuilt-in three-dimensional graphics hardware acceleration capabilities,whereas other video cards do not. As a result, a computer program thathas specific video card preferences, which may include specific videocard requirements, may only be able to be properly run on one of the twoor more video cards within a given computing device, or, more generally,the program may only be able to use a subset of all available videocards and monitors.

Most operating systems specify default video cards, or enable a user toselect a default video card, of all the video cards within the computingdevices on which the operating systems are running. When a computerprogram is started, it is typically run on the default video card of thecomputing device in question. However, this default video card may notsupport the video card preferences of the computer program. At best, thecomputer program may not run as optimally as compared to when thecomputer program runs on a video card that does support its video cardpreferences.

In the worst-case scenario, however, the computer program may not beable to run at all on the default video card of the computing device inquestion. For instance, the computer program may be a game that requiresa video card having three-dimensional graphics hardware accelerationcapability. If the default video card does not have this capability, thecomputer program may report to the user that it is unable to be run, andthen shut down. The user is forced to switch the default video card toone that has this capability, and then restart the program. Once theuser has finished using the computer program, he or she may then have toswitch the default video card back to the previous default video card torun other computer programs as desired.

For these and other reasons, therefore, there is a need for the presentinvention.

SUMMARY OF THE INVENTION

The present invention relates generally to running a target computerprogram on a video card selected from a number of video cards based onthe video card preferences of the target computer program. A computingdevice of an embodiment of the invention includes a number of videocards. The computing device also includes a mechanism to determine oneor more parameters relating to video card parameters of a targetcomputer program. The mechanism is to select a video card from the videocards of the computing device based on the parameters, and is to run thetarget computer program on the video card selected.

At least some embodiments of the invention provide for advantages overthe prior art. A target computer program having video card preferencesthat are better supported by a video card of a computing device otherthan the default video card of the computing device is run on this videocard, instead of the default video card. The user furthermore does nothave to switch the default video card to the video card that bettersupports the video card preferences of the target computer program.

Still other advantages, aspects, and embodiments of the invention willbecome apparent by reading the detailed description that follows, and byreferring to the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

The drawings referenced herein form a part of the specification.Features shown in the drawing are meant as illustrative of only someembodiments of the invention, and not of all embodiments of theinvention, unless otherwise explicitly indicated, and implications tothe contrary are otherwise not to be made.

FIG. 1 is a flowchart of a method for selecting a video card on which torun a computer program without the user having to change the defaultvideo card, according to an embodiment of the invention.

FIG. 2 is a diagram of a computing device having multiple video cards,according to an embodiment of the invention.

FIGS. 3, 4, and 5 are diagrams of methods for selecting a video card onwhich to run a computer program that are consistent with but moredetailed than the method of FIG. 1, according to varying embodiments ofthe invention.

DETAILED DESCRIPTION OF THE DRAWINGS

In the following detailed description of exemplary embodiments of theinvention, reference is made to the accompanying drawings that form apart hereof, and in which is shown by way of illustration specificexemplary embodiments in which the invention may be practiced. Theseembodiments are described in sufficient detail to enable those skilledin the art to practice the invention. Other embodiments may be utilized,and logical, mechanical, and other changes may be made without departingfrom the spirit or scope of the present invention. The followingdetailed description is, therefore, not to be taken in a limiting sense,and the scope of the present invention is defined only by the appendedclaims.

Overview

FIG. 1 shows a method 100, according to an embodiment of the invention.The method 100 determines one or more parameters relating to the videocard preferences of a target computer program (102). The video cardpreferences may include actual video card requirements of the targetcomputer program. For example, a computer program may require that it berun on a video card that has three-dimensional graphics hardwareacceleration capability. If the computer program is attempted to be runon a video card that does not have this capability, the computer programmay not run at all. In this sense, this video card preference of thecomputer program is a video card requirement, since the computer programcannot run on a video card that does not have this requirement, orpreference.

The video card preference may further include video card preferences,but not requirements, of the target computer program. For example, acomputer program may optimally run on a video card that is connected toa display device that supports and is run at a given resolution, such as1280×1024 pixels. The computer program may be able to run on a videocard that is connected to a display device that supports and is run at alower resolution, such as 800×600 pixels, but it may not run asoptimally on this video card. For instance, the computer program maywant to display a large amount of information that can be completelydisplayed using a video card connected to a display device being run at1280×1024 pixels, but that cannot be completely displayed using a videocard connected to a display device being run at 1024×768 pixels. Assuch, this video card preference of the computer program is apreference, and not a requirement, since it can be run on video cardsconnected to display devices being run at lower resolutions.

The video card preferences of a computer program can relate to both theintrinsic capabilities of a video card, as well as to the capabilitiesof a video card based on the display device connected to the video cardand/or the current settings of the video card. For example,three-dimensional graphics hardware acceleration capability andanti-aliasing capability, as known within the art, are intrinsiccapabilities; either a video card have these capabilities, or it doesnot. As another example, resolution and number of colors are video cardpreferences that are based on the capabilities of the display deviceconnected to the video card and/or the current settings of the videocard. A video card may be able to support a resolution of 1280×1024pixels, for instance, but the display device to which the video card isconnected, and/or the current settings of the video card, may onlysupport or specify a resolution of 1024×768 pixels. Likewise, the sameor different video card may be able to support a “thousands of colors”setting, for instance, but the display device to which the video card isconnected, and/or the current settings of this video card, may onlysupport or specify sixteen colors.

The parameters relating to the video card preferences of a computerprogram may further specify the identity of a particular video card onthe computing device on which the computer program is to be run, or maynot specify the identify of such a particular video card. For example,the computing device in question may have two video cards: a first videocard and a second video card. The parameters may particularly specifythat the computer program is to be run on the first video card, asopposed to the second video card. Alternatively, the parameters mayspecify that the computer program is to be run on a video card having aparticular resolution, or other capabilities, such that the parametersdo not particularly specify the identity of either the first or thesecond video card.

Throughout this patent application, it is said that a computer programis “run” on a video card of a computing device. This terminology meansthat any information intended for display on a display device isdisplayed on the display device that is connected to the video card inquestion. That is, a computer program being run on a video card meansthat information output by the computer program is displayed on thedisplay device connected to this video card, as opposed to beingdisplayed on the display device connected to any other video card of thecomputing device.

The target computer program is started on a computing device having anumber of video cards (104). For example, within a graphical userinterface of an operating system running on the computing device, a usermay select the target computer program to start it. As another example,the operating system may start the target computer program withoutdirect user interaction, such as in response to a given event. Forinstance, the user may have previously specified that the targetcomputer program is to start at a given time each day.

In response, one of the video cards within the computing device isselected based on the parameters relating to the video card preferencesof the target computer program (106). If the identity of a particularvideo card is specified within the parameters, and this video card ispresent on the computing device, then this is the video card that isselected. If the parameters do not specify any particular video card, orthe particular video card specified is not present then any video cardrequirements to which the parameters relate are examined vis-à-vis thevideo cards of the computing device. For example, if the parametersspecify a video card requirement that the target computer programrequires three-dimensional graphics hardware acceleration capability,and just one of the video cards within the computing device has thiscapability, then that video card is selected.

If the parameters specify a video card requirement satisfied by morethan one of the video cards within the computing device, or if theparameters do not specify any video card requirements, then other videocard preferences to which the parameters relate are examined vis-à-visthe video cards within the computing device. For example, the targetcomputer program may prefer a resolution of at least 1280×1024 pixels.If just one of the video cards is connected to a display device thatsupports and is set at this resolution, then this video card isselected. Ultimately, if more than one of the video cards satisfy theparameters, then the default video card is selected, where the defaultvideo card is one of the cards that satisfy the parameters. If more thanone of the video cards satisfy the parameters, but the default videocard is not one of these cards, then one of the video cards that dosatisfy the parameters is selected, such as in a random or other manner.It is noted that if no video cards satisfy the parameters, then the usermay be provided with an error notification indicating that the targetcomputer program cannot be run.

Thereafter, the target computer program is run on the video card thathas been selected (108). The video card selected may not be the defaultvideo card specified by the operating system running on the computingdevice. As such, the user is able to run the target computer program ona given video card without having to first switch the default video cardto the given video card. Likewise, in this situation, the user does nothave to switch the default video card back to its original setting afterrunning the target computer program on the given video card.

Computing Device having Multiple Video Cards

FIG. 2 shows a computing device 200, according to an embodiment of theinvention. The computing device 200 may be a desktop computer, a laptopcomputer, or another type of computing device. The computing device 200is depicted in FIG. 2 as including a number of video cards 202A, 202B, .. . , 202N, collectively referred to as the video cards 202, and whichare connected to display devices 210A, 210B, . . . , 210N, collectivelyreferred to as the display devices 210. There are at least two videocards 202 correspondingly connected to two display devices 210. Each ofthe display devices 210 may or may not be part of the computing device200. The computing device 200 is also depicted in FIG. 2 as including anoperating system 204, a video card selection mechanism 206, and a targetcomputer program 208. As can be appreciated by those of ordinary skillwithin the art, other components that are typically part of thecomputing device 200, such as memory, processors, hard disk drives, andso on, are not specifically shown in FIG. 2.

The video cards 202 may be discrete cards inserted into correspondingslots of the computing device 200, and/or integrated within themainboard, or motherboard, of the computing device 200 itself That is,as used herein, the terminology “video card” also encompasses displaycircuits built into the chipsets of the computing device 200. Ingeneral, the video cards 202 create the electronic signals required bythe display devices 210 so that information can be displayed on thedisplay devices 210 by the computing device 200.

The video cards 202 may further correspond to each of a number ofdisplay outputs of a multiple-headed video card. A multiple-headed videocard is a video card that has two or more display outputs, to which twoor more display devices can be connected and used at the same time. Inthe present patent application, each display output is said tocorrespond to a separate one of the video cards 202. For example, themultiple-headed video card may have separate video card circuitry topower each of its display outputs. However, as another example, themultiple-headed video card may have video card circuitry that powers allof its display outputs, but each display output is nevertheless said tocorrespond to a separate one of the video cards 202 herein. Therefore,in general, the number of video cards 202 from which a video card isselected for running the target computer program 208 on is said to beequal to the number of display devices 210 that are currently connectedto the computing device 200 and that are capable of, and/or are, beingused at the same time.

Furthermore, the terminology “video card” is used herein in a generaland all-encompassing sense. Other synonymous terms used by those ofordinary skill within the art include graphics card, graphics or videoadapter, graphics or video board, graphics or video controller, graphicsor video display adapter, graphics or video display card, graphics orvideo display controller, display board, display card, and displaycontroller, among other terms. The display devices 210 to which thevideo cards 202 are connected may be cathode-ray tube (CRT), displays,flat-panel displays like plasma displays or liquid-crystal displays(LCD's), or other types of display devices. The display devices 210 mayeach be housed separately from the computing device 200, or integratedwithin the housing of the computing device 200.

The operating system 204 may generally and non-restrictively beconsidered as the master control program that runs the computing device200. Examples of operating systems include versions of the MicrosoftWindows® operating system, available from Microsoft Corp., of Redmond,Wash., versions of the LINUX® operating system, as well as versions ofthe Apple Macintosh® operating system, available from Apple Computer,Inc., of Cupertino, Calif. Windows® is a registered trademark ofMicrosoft Corp., LINUX® is a registered trademark of Linus Torvalds, andMacintosh® is a registered trademark of Apple Computer. By comparison,the target computer program 208 is a computer program that runs on thecomputing device 200 via the operating system 204. The target computerprogram 208 may be an application program, such as a word processingprogram, an entertainment program, such as a game, or another type ofcomputer program, as can be appreciated by those of ordinary skillwithin the art.

The video card selection mechanism 206 may be hardware, software, or acombination of hardware and software. The mechanism 206 may be acomputer program that is separate from the operating system 204, or itmay be part of the operating system 204. In one embodiment, themechanism 206 may be stored in the memory (not shown) of the system 200.The mechanism 206 generally determines one or more parameters relatingto video card preferences of the target computer program 208, selectsone of the video cards 202 on which to run the program 208 based onthese parameters, and then runs the program 208 on the video cardselected. As such, the mechanism 206 may perform the method 100 of FIG.1 that has been described, and/or perform any of the methods describedin subsequent sections of the detailed description.

First Specific Embodiment

FIG. 3 shows a method 300, according to an embodiment of the invention.The method 300 is consistent with but more detailed than the method 100of FIG. 1. The method 300 may be performed by the video card selectionmechanism 206 of FIG. 2. For instance, the method 300 may be performedby a computer program. The computer program may be stored on acomputer-readable medium, such as a tangible computer-readable mediumlike a recordable data storage medium, or another type ofcomputer-readable medium.

The method 300 detects that a target computer program has been startedon a computing device (302). The detection of the target computerprogram having been started may be performed by a computer program, suchas a separate application program or a service, already running on thecomputing device. In another embodiment, the detection of the targetcomputer program having been started may be performed by a part of theoperating system running on the computing device.

In either case, in response, the method 300 determines whetherparameters relating to the video card preferences of the target computerprogram have been previously selected and stored (304). If theseparameters have not yet been selected or stored, then the user isrequested to select the parameters from a list (306). For example, awindow may be displayed within a graphical user interface (GUI)controlled by the operating system. The window may present the user witha list of parameters relating to video card preferences. The user may beable to select which of the parameters he or she wishes to associate asthe video card preferences of the target computer program in question.Once the user has selected the parameters, they are stored (308), sothat subsequent performance of the method 300 results in the method 300proceeding directly to part 310 from part 304, without the user havingto reselect the parameters.

Thereafter, the video card on which the target computer program is to berun is selected based on the parameters (310). For instance, such videocard selection may be performed as has been described in detail inrelation to the method 100 of FIG. 1. The target computer program isthen run on the video card that has been selected (312). In thisembodiment of the invention, therefore, the user selects the parametersrelating to the video card preferences of the target computer programafter this computer program has been started. It is noted that wherethere is no video card that satisfies the parameters, then the targetcomputer program is not run, and the user may be provided with an errornotification indicating that no video card satisfies the parameters,which is not explicitly depicted in FIG. 3.

Second Specific Embodiment

FIG. 4 shows a method 400, according to another embodiment of theinvention. The method 400 is also consistent with but more detailed thanthe method 100 of FIG. 1, and may be performed by the video cardselection mechanism 206 of FIG. 2. The method 400 may also be performedby a computer program stored on a computer-readable medium, such as atangible computer-readable medium like a recordable data storage medium,or another type of computer-readable medium.

The method 400 displays a properties window for a target computerprogram in which properties of the program are display (402). Theproperties window can be the window that is normally displayed by anoperating system running on the computing device in question. Forexample, in versions of the Microsoft Windows® operating system,right-clicking on the icon for a computer program results in the displayof a context menu within which the user can select a properties item.Selecting the properties item results in display of the propertieswindow. As can be appreciated by those of ordinary skill within the art,the properties window normally allows a user to select the identity ofthe computer program with which the icon is associated, what directorythe computer program should be run in, the type of window the computerprogram should be run in, as well as other properties that can bemodified by the user.

The user is thus permitted to select parameters relating to the videocard preferences of the target computer program from a list of suchparameters displayed within the properties window (404). In thisembodiment, therefore, the user is able to select the parameters withouthaving to have first start the target computer program. Rather, the usercan simply select the parameters by calling up the properties window forthe target computer program. It is noted that this embodiment may alsobe used in conjunction with the embodiment of FIG. 3. Thus, if the userdoes not pre-select the parameters via the properties window, then he orshe is afforded an opportunity to select the parameters when the targetcomputer program is started, as in FIG. 3.

The parameters selected by the user are stored (406). As in theembodiment of FIG. 3, storing the parameters means that the user doesnot have to reselect the parameters later. Thereafter, the targetcomputer program is started on the computing device (408). In response,the method 400 selects which video card of the computing device on whichto run the target computer program, based on the parameters that havebeen selected by the user and stored (410). The target computer programis then run on the video card selected (412). In both the embodiment ofFIG. 3 and the embodiment of FIG. 4, then, the user selects theparameters relating to the video card preferences of the target computerprogram, on which basis a video card on which this computer program isto be run is selected.

Third Specific Embodiment

FIG. 5 shows a method 500, according to another embodiment of theinvention. The method 500 is also consistent with but more detailed thanthe method 100 of FIG. 1, and may be performed by the video cardselection mechanism 206 of FIG. 2. The method 500 may further beperformed by a computer program stored on a computer-readable medium,such as a tangible computer-readable medium like a recordable datastorage medium, or another type of computer-readable medium.

A target computer program is started on a computing device (502). Inresponse, the method 500 runs the target computer program on the videocard of the computing device that has been previously specified as thedefault video card (504). For instance, the operating system running onthe computing device may specify one of the video cards of the computingdevice as that which is the default video card for the computing device,where the default video card specification may be changed by the user ifdesired.

It is noted that even if the default video card is not able to optimallyrun the target computer program, or run the target computer program fora great length of time without having to terminate prematurely, thetarget computer program in great likelihood will be able to run on thedefault video card for at least a short period of time. For example, thetarget computer program may require that the video card on which it runshas three-dimensional graphics hardware capability, which the defaultvideo card may not have. As a result, once the target computer programlearns that the default video card does not have this capability, theprogram may terminate prematurely, without performing its intendedfunctionality as may be desired by the user. However, until the computerprogram terminates, it is in fact running on the default video card,which allows part 506 of the method to be performed.

Thus, video calls from the target computer program to the default videocard are captured while the target computer program is running on thedefault video card (506). In general, a computer program interacts witha video card by calling functions that may be exposed by an applicationprogramming interface (API) of a driver for the video card within theoperating system. A driver is a set of computer program routines thatlinks the operating system to a hardware device, such as a video card,and includes the precise machine language needed for the device toperform the functions requested by computer programs like the targetcomputer program.

The video calls that are captured are thus the calls by the targetcomputer program to the driver for the default video card. The videocalls provide information as to the expectations that the targetcomputer program has for the desired video card. For instance, the videocalls may request that the default video card perform three-dimensionalgraphics acceleration in hardware, a capability that the default videocard may or may not have. As another example, the video calls mayrequest that the default video card perform anti-aliasing in hardware, acapability that the default video card also may or may not have.

Thereafter, the parameters relating to the video card preferences of thetarget computer program may be selected based on these captured videocalls (508). In one embodiment, the parameters are specifically forpreferences that are requirements, insofar as the target computerprogram requesting the default video card to perform some type offunctionality can imply that the program requires that this video cardhave the capability to perform the requested functionality.Alternatively, however, the parameters selected in part 508 may not berelated to video card requirements, but rather to other types of videocard preferences that are not requirements.

The parameters are then stored (510). In this way, the embodiment ofFIG. 5 may be used in relation to the embodiment of FIG. 4, forinstance. That is, the embodiment of FIG. 5 is different than theembodiments of FIGS. 3 and 4 in that the parameters relating to thevideo card preferences of the target computer program are selectedwithout any interaction with the user, such that the user does not infact select the parameters. However, once the parameters have beenselected in part 508 and stored in part 510, the user may be able tomodify them via performing of the method 400 of FIG. 4, in which theuser calls up the properties window for the target computer program inorder to modify these parameters.

The video card on which the target computer program is to be optimallyrun is then selected based on these parameters (512). It is noted thatthe target computer program already is running, or had been runningbefore premature termination, on the default video card, due toperformance of part 504 of the method 500. Therefore, if the selectedvideo card is different than the default video card, then the targetcomputer program is switched so that it runs on the selected video card(514). That is, if the target computer program is still running on thedefault video card, it is switched from running on the default videocard to running on the selected video card. If the target computerprogram is no longer running on the default video card, as a result ofpremature termination, for instance, then it is restarted on theselected video card in part 514.

CONCLUSION

It is noted that, although specific embodiments have been illustratedand described herein, it will be appreciated by those of ordinary skillin the art that any arrangement calculated to achieve the same purposemay be substituted for the specific embodiments shown. For example,whereas three distinct embodiments of the invention have been describedin relation to FIGS. 3, 4, and 5, these embodiments may be employed inconjunction with one another as well, as has been alluded to within theprevious sections of the detailed description. This application is thusintended to cover any adaptations or variations of embodiments of thepresent invention. Therefore, it is manifestly intended that thisinvention be limited only by the claims and equivalents thereof.

1. A computing device comprising: a plurality of video cards; and, amechanism to determine a parameter relating to video card preferences ofa target computer program, select a video card from the plurality ofvideo cards to run the target computer program on based on theparameter, and to run the target computer program on the video cardselected.
 2. The computing device of claim 1, wherein the plurality ofvideo cards comprises at least one discrete video card inserted into acorresponding slot of the computing device.
 3. The computing device ofclaim 1, wherein the plurality of video cards comprises a video cardintegrated within a mainboard of the computing device.
 4. The computingdevice of claim 1, wherein the plurality of video cards comprises amultiple-headed video card, where each of a plurality of display outputsof the multiple-headed video card corresponds to one of the plurality ofvideo cards.
 5. The computing device of claim 1, wherein the mechanismcomprises a computer program executed on the computing device and otherthan an operating system of the computing device.
 6. The computingdevice of claim 1, wherein the mechanism comprises a part of anoperating system of the computing device.
 7. The computing device ofclaim 1, wherein the parameter relating to the video card preferences ofthe target computer program is selected by a user.
 8. The computingdevice of claim 1, wherein the parameter relating to the video cardpreferences of the target computer program is selected withoutinteraction with a user.
 9. The computing device of claim 1, wherein theparameter relating to the video card preferences of the target computerprogram comprises an identity of one of the plurality of video cards ofthe computing device on which the target computer program is to be run.10. The computing device of claim 1, wherein the parameter related tothe video card preferences of the target computer program comprises oneof: whether three-dimensional hardware acceleration capability is neededby the target computer program; whether anti-aliasing capability isdesired or needed by the target computer program; a number of colorsdesired or needed by the target computer program; and, a resolutiondesired or needed by the target computer program.
 11. The computingdevice of claim 1, wherein the video card preferences of the targetcomputer program comprise video card requirements of the target computerprogram.